Check-pointing is a common building block in approaches to fault tolerance of software. The transient state of a system usually includes multiple information blocks that are stored in multiple memory pages of a memory unit. A system employing check-pointing periodically saves its transient state to a storage unit (such as disk, disk array, tape or other non-volatile storage unit) from which the state can be recovered into the memory unit. Saving the entire transient state at the storage unit is expensive and also storage consuming. Incremental check-pointing reduces the cost and overhead associated with check-pointing by storing only memory pages that were altered after the previous check-pointing operation occurred.
Check-pointing in general and incremental check-pointing in particular have been successfully applied in high performance computing systems, where multiple processor nodes execute long and complex computations.
There is a growing need to provide devices, computer program products and methods for efficient storage of information blocks.